// Kony

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "AttributeSet.h"
#include "BaseHUD.generated.h"

class UAttributeMenuWidgetController;
class UAttributeSet;
class UAbilitySystemComponent;
class UOverlayWidgetController;
class UBaseUserWidget;
class USpellMenuWidgetController;

struct FWidgetControllerParams;

/**
 * 用户UI主界面 基类
 */
UCLASS()
class GASC_HUANLING_API ABaseHUD : public AHUD
{
	GENERATED_BODY()

public:
	//主界面 覆盖层控制器
	UOverlayWidgetController* GetOverlayWidgetController(const FWidgetControllerParams& WCParams);
	//主界面 属性菜单控制器
	UAttributeMenuWidgetController* GetAttributeMenuWidgetController(const FWidgetControllerParams& WCParams);
	//主界面 法术菜单控制器
	USpellMenuWidgetController* GetSpellMenuWidgetController(const FWidgetControllerParams& WCParams);

	void InitOverlay(APlayerController* PC, APlayerState* PS, UAbilitySystemComponent* ASC, UAttributeSet* AS);
	
protected:

private:
	//主界面 覆盖层组件
	UPROPERTY()
	TObjectPtr<UBaseUserWidget> OverlayWidget;
	//主界面 覆盖层组件类
	UPROPERTY(EditAnywhere)
	TSubclassOf<UBaseUserWidget> OverlayWidgetClass;
	//主界面 覆盖层控制器
	UPROPERTY()
	TObjectPtr<UOverlayWidgetController> OverlayWidgetController;
	//这个是用于在蓝图设置OverlayWidgetController控制器类
	//主界面 覆盖层控制器类
	UPROPERTY(EditAnywhere)
	TSubclassOf<UOverlayWidgetController> OverlayWidgetControllerClass;
	//主界面 属性菜单控制器
	UPROPERTY()
	TObjectPtr<UAttributeMenuWidgetController> AttributeMenuWidgetController;
	//这个是用于在蓝图设置AttributeMenuWidgetController控制器类
	//主界面 属性菜单控制器类
	UPROPERTY(EditAnywhere)
	TSubclassOf<UAttributeMenuWidgetController> AttributeMenuWidgetControllerClass;

	//主界面 属性菜单控制器
	UPROPERTY()
	TObjectPtr<USpellMenuWidgetController> SpellMenuWidgetController;
	//这个是用于在蓝图设置AttributeMenuWidgetController控制器类
	//主界面 法术菜单控制器类
	UPROPERTY(EditAnywhere)
	TSubclassOf<USpellMenuWidgetController> SpellMenuWidgetControllerClass;
};
